<!doctype html>
<html lang=ru>
<meta charset=utf-8>

<title>LibreSSL: Обновления (Upstream Patches)</title>
<link rel="canonical" href="https://www.libressl.org/patches.html">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="openbsd.css">

<style>
ul {
	list-style-type: none;
}
</style>

<h2 id=OpenBSD>
<a href="index.html">
<i>Libre</i><b>SSL</b></a>
Обновления (Upstream Patches)
</h2>
<hr>

<p>
Когда устаревают протоколы, алгоритмы и методы программирования, программное
обеспечение, использующее их, не всегда готово к обновлению. Проект OpenBSD,
наряду с другими операционными системами и дистрибутивами, работает над
улучшением и исправлением уязвимого ПО, и предоставляет эти изменения всем
желающим.

<p>
Цель этой страницы - отслеживать некоторые исправления, поддерживаемые в
системе портов OpenBSD. Проект FreeBSD поддерживает соответствующую
<a href="https://wiki.freebsd.org/LibreSSL">вики</a> с подробным описанием
текущих проблем и другой важной информацией.

<h3>SSLv3</h3>
<p>
Распространенной ошибкой является использование SSLv3_method или TLSv1_method
для настройки нового SSL_CTX. Эти методы жестко кодируют версию протокола,
используемого в соединении. Например, использование TLSv1_method означает, что
должен использоваться только TLS 1.0, и ни в коем случае нe TLS 1.1, нe 1.2
или более поздние версии. Это почти всегда не совсем то, что вы хотите.
<p>
Лучшим и более безопасным способом является использование SSLv23_method
(для совместимости со старыми версиями LibreSSL/OpenSSL) или более новый
TLS_method, использование которых приведет к согласованности использования
самого последнего поддерживаемого протокола. Несмотря на название, SSLv23_method
фактически в состоянии согласовывать TLS-соединение с OpenSSL или LibreSSL.
Начиная с LibreSSL 2.3.0, SSLv23_method согласовывает только TLS.
<p>
Вот некоторые из программ и библиотек, которых затронуло удаление SSLv3.
В большинстве случаев поддержка легко проверялась при помощи OPENSSL_NO_SSLV3
или переключением на SSLv23_method/TLS_method. Все пакеты OpenBSD теперь либо
имеют патчи в дереве портов, либо имеется исправление, которое еще не вошло в релиз.

<ul style="column-count: 3">
	<li>apache-httpd :
		<a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=58349">report</a>,
		<a href="https://svn.apache.org/viewvc?view=revision&revision=1703952">patch</a>
	<li>bro :
		<a href="https://cvsweb.openbsd.org/ports/net/bro/patches/patch-aux_broccoli_src_bro_openssl_c">patch</a>
	<li>commoncpp :
		<a href="https://cvsweb.openbsd.org/ports/devel/commoncpp/patches/patch-src_ssl_cpp">patch</a>
	<li>courier-imap :
		<a href="https://cvsweb.openbsd.org/ports/mail/courier-imap/patches/patch-libs_tcpd_configure_ac">patch</a>
		<a href="https://cvsweb.openbsd.org/ports/mail/courier-imap/patches/patch-libs_tcpd_libcouriertls_c">patch</a>
	<li>e17 :
		<a href="https://cvsweb.openbsd.org/ports/x11/e17/ecore/patches/patch-src_lib_ecore_con_ecore_con_ssl_c">patch</a>
	<li>fetchmail :
		<a href="https://gitlab.com/fetchmail/fetchmail/commit/a2ae6f8d15d7caf815d7bdd13df833fd1b2af5cc">patch</a>
	<li>haproxy :
		<a href="https://github.com/haproxy/haproxy/commit/17c3f6284cf605e47f6525c077bc644c45272849">patch</a>
	<li>httperf :
		<a href="https://cvsweb.openbsd.org/ports/benchmarks/httperf/patches/patch-src_httperf_c">patch</a>
	<li>imapfilter :
		<a href="https://cvsweb.openbsd.org/ports/mail/imapfilter/patches/patch-src_imapfilter_c">patch</a>
	<li>kamailio :
		<a href="https://cvsweb.openbsd.org/ports/telephony/kamailio/patches/patch-modules_tls_tls_init_c">patch</a>
	<li>luasec :
		<a href="https://cvsweb.openbsd.org/ports/security/luasec/patches/patch-src_context_c">patch</a>
	<li>monit :
		<a href="https://bitbucket.org/tildeslash/monit/commits/f494be42d356fac9d53cb60f27464418a1a2f0f9">patch</a>
	<li>monitoring-plugins :
		<a href="https://cvsweb.openbsd.org/ports/net/monitoring-plugins/patches/patch-plugins_sslutils_c">patch</a>
	<li>nssl :
		<a href="https://cvsweb.openbsd.org/ports/net/nssl/patches/patch-sslut_c">patch</a>
	<li>p5-Crypt-SSLeay :
		<a href="https://cvsweb.openbsd.org/ports/security/p5-Crypt-SSLeay/patches/patch-Makefile_PL">patch</a>
		<a href="https://cvsweb.openbsd.org/ports/security/p5-Crypt-SSLeay/patches/patch-SSLeay_xs">patch</a>
	<li>p5-Mail-SpamAssassin :
		<a href="https://cvsweb.openbsd.org/ports/mail/p5-Mail-SpamAssassin/patches/patch-spamc_libspamc_c">patch</a>
	<li>php 5.4 :
		<a href="https://cvsweb.openbsd.org/ports/lang/php/5.4/patches/patch-ext_openssl_xp_ssl_c">patch</a>
	<li>pjsua :
		<a href="https://cvsweb.openbsd.org/ports/telephony/pjsua/patches/patch-pjlib_src_pj_ssl_sock_ossl_c">patch</a>
	<li>py-M2Crypto :
		<a href="https://cvsweb.openbsd.org/ports/security/py-M2Crypto/patches/patch-SWIG__ssl_i">patch</a>
	<li>qca-ossl :
		<a href="https://cvsweb.openbsd.org/ports/security/qca-ossl/patches/patch-qca-ossl_cpp">patch</a>
	<li>qt4 :
		<a href="https://cvsweb.openbsd.org/ports/x11/qt4/patches/patch-src_network_ssl_qsslsocket_openssl_cpp">patch</a>
	<li>ruby 1.8-2.2 :
		<a href="https://cvsweb.openbsd.org/ports/lang/ruby/2.2/patches/patch-ext_openssl_extconf_rb">patch</a>
		<a href="https://cvsweb.openbsd.org/ports/lang/ruby/2.2/patches/patch-ext_openssl_ossl_ssl_c">patch</a>
	<li>socat :
		<a href="https://cvsweb.openbsd.org/ports/net/socat/patches/patch-sslcls_c">patch</a>
	<li>squid :
		<a href="https://cvsweb.openbsd.org/ports/www/squid/patches/patch-src_ssl_support_cc">patch</a>
		<a href="https://cvsweb.openbsd.org/ports/www/squid/patches/patch-src_ssl_bio_cc">patch</a>
	<li>sslsplit :
		<a href="https://github.com/droe/sslsplit/commit/57a2ab85884e8bacec8b03aa5a3f935376f43a2d">patch</a>
	<li>tn5250 :
		<a href="https://cvsweb.openbsd.org/ports/net/tn5250/patches/patch-src_sslstream_c">patch</a>
	<li>znc :
		<a href="https://cvsweb.openbsd.org/ports/net/znc/patches/patch-src_Csocket_cpp">patch</a>
</ul>

<h3>SHA-0</h3>
<p>
SHA-0, алгоритм хеширования, отозванный вскоре после его публикации 20 лет назад,
удален из LibreSSL, начиная с версии 2.3.0. LibreSSL использует новый макрос
OPENSSL_NO_SHA0 для определения того, используется ли этот алгоритм или отключен.
Следующее программы нуждаются в исправлениях для удаления SHA-0 из libcrypto:

<ul style="column-count: 3">
	<li>qca-ossl :
		<a href="https://cvsweb.openbsd.org/ports/security/qca-ossl/patches/patch-qca-ossl_cpp">patch</a>
	<li>ssvnc :
		<a href="https://cvsweb.openbsd.org/ports/net/ssvnc/patches/patch-vncstorepw_ultravnc_dsm_helper_c">patch</a>
	<li>x11vnc :
		<a href="https://cvsweb.openbsd.org/ports/x11/x11vnc/patches/patch-x11vnc_enc_h">patch</a>
</ul>

<h3>EGD</h3>
<p>
EGD, или Entropy Gathering Daemon, представляет инструмент, написанный на perl,
предназначенный для замены функциональности /dev/urandom в системах без безопасного
генератора случайных чисел в ядре или когда /dev/urandom недоступен в отдельной
привилегированной среде chroot (privilege-separated chroot environment).
LibreSSL генерирует случайные данные при помощи интерфейса
<a href="https://man.openbsd.org/arc4random.3">arc4random(3)</a>. По этой причине
он не нуждается ни в EGD, ни в каком-либо другом вмешательстве со стороны программ
для предоставления CSRNG другим программам или для собственных нужд. Ранее из
LibreSSL были удалены RAND_egd() и RAND_egd_bytes(), проверяемые с помощью OPENSSL_NO_EGD.
Следующий список программ нуждается в исправлениях, с целью избежать использования
EGD, когда он недоступен.

<ul style="column-count: 3">
	<li>dcmtk :
		<a href="https://cvsweb.openbsd.org/ports/graphics/dcmtk/patches/patch-dcmtls_libsrc_tlslayer_cc">patch</a>
	<li>php 5.4 :
		<a href="https://cvsweb.openbsd.org/ports/lang/php/5.4/patches/patch-ext_openssl_openssl_c">patch</a>
	<li>pypy :
		patch <a href="https://cvsweb.openbsd.org/ports/lang/pypy/patches/patch-pypy_module__ssl_interp_ssl_py">1</a>
		<a href="https://cvsweb.openbsd.org/ports/lang/pypy/patches/patch-lib-python_2_7_socket_py">2</a>
		<a href="https://cvsweb.openbsd.org/ports/lang/pypy/patches/patch-lib-python_2_7_ssl_py">3</a>
		<a href="https://cvsweb.openbsd.org/ports/lang/pypy/patches/patch-pypy_module__ssl___init___py">4</a>
		<a href="https://cvsweb.openbsd.org/ports/lang/pypy/patches/patch-rpython_rlib_ropenssl_py">5</a>
	<li>alpine :
		<a href="https://cvsweb.openbsd.org/ports/mail/alpine/patches/patch-pith_smime_c">patch</a>
	<li>imapproxy :
		<a href="https://cvsweb.openbsd.org/ports/mail/imapproxy/patches/patch-src_main_c">patch</a>
	<li>ircd-ratbox :
		<a href="https://cvsweb.openbsd.org/ports/net/ircd-ratbox/patches/patch-libratbox_src_openssl_c">patch</a>
	<li>socat :
		<a href="https://cvsweb.openbsd.org/ports/net/socat/patches/patch-sslcls_c">patch</a>
	<li>heimdal :
		<a href="https://cvsweb.openbsd.org/ports/security/heimdal/patches/patch-lib_hcrypto_rand_h">patch</a>
	<li>stunnel :
		<a href="https://cvsweb.openbsd.org/ports/security/stunnel/patches/patch-src_ssl_c">patch</a> (fixed in 5.24)
	<li>elinks :
		patch <a href="https://cvsweb.openbsd.org/ports/www/elinks/patches/patch-src_network_ssl_ssl_c">1</a>
		<a href="https://cvsweb.openbsd.org/ports/www/elinks/patches/patch-configure_in">2</a>
	<li>links+ :
		<a href="https://cvsweb.openbsd.org/ports/www/links+/patches/patch-https_c">patch</a>
	<li>links :
		<a href="https://cvsweb.openbsd.org/ports/www/links/patches/patch-https_c">patch</a>
	<li>retawk :
		<a href="https://cvsweb.openbsd.org/ports/www/retawq/patches/patch-resource_c">patch</a>
</ul>
